#include <stdio.h>
#include <strings.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <semaphore.h>
#include <sqlite3.h>
#include <fcntl.h>

#include <sys/types.h>
#include <sys/stat.h> 
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>

/**************************************************************************/
#define SERV_PORT 9000                          //端口号
#define BUFF_SIZE 1024

#define OK                 0
#define ERROR             -1
#define MALLOC_ERROR      -2 

#define SERV_PORT 9000                          //端口号
#define BUFF_SIZE 1024

#define REGISTER           1000                 //注册
#define REGISTER_SUCCESS   1100                 //注册成功
#define REGISTER_FAIL      1200                 //注册失败
#define REGISTER_REPEAT    1300                 //用户重复注册    
#define NOT_REGISTER       1400                 //用户未注册  
 
#define LOG_IN             2000                 //登录
#define LOGIN_FAIL         2100                 //登录失败
#define LOGIN_SUCCESS      2200                 //登录成功
#define PASSWORD_ERROR     2300                 //密码错误
#define NAME_ERROR         2400                 //用户名错误
#define LOGIN_REPEAT       2500                 //重复登录
#define LOGIN_NULL         2600                 //用户未登录
#define QUIT_LOGIN         2700                 //退出登录
#define QUIT_SUCCESS       2800                 //下线成功

#define SEND_SUCCESS       3100                 //发送成功
#define SEND_FAIL          3200                 //发送失败 

#define CHAT_ONE           4000                 //私聊
#define CHAT_ALL           4100                 //群聊
#define FIND_GOAL          4200                 //找到发送对象 
#define NO_GOAL            4300                 //未找到发送对象 

#define ONLINE_USER        5000                 //查看在线用户
#define OLUSER_SUCCESS     5100                 //在线用户数据发送成功
#define SEND_END           5200                 //数据发送结束

#define KICK_USER          6000                 //用户已被踢出聊天室

#define BAN_USER           7000                 //用户已被禁言
#define RELIEVE_BAN        7100                 //解除禁言

/**************************************************************************/
struct user                                     //通信格式
{
	int socketfd;
	int cmd; 
	char name[20];
	char password[10];
	char npassword[10];
	char toname[20];
	int result;   
	char msg[BUFF_SIZE];
};

struct userManage                             //保存数据
{
	char Ad_name[20];
	char Ad_password[10];
	int online_flag[20];      //在线标志位，在线为1
	int ban_flag[20];         //禁言标志位，被禁言为1 
	int flag[20];             // 表明哪个空缺，空为0
	struct user users[20];
};
struct userManage uMge;

typedef struct node
{
	char name[20];
	struct node *next;    // 结点指针
}Node;
typedef Node *PNode;     // 重命名结点指针类型
PNode head_node;
